CLCTN · IDENTIFICATION PIPELINE · COMPANION TO THE TECHNICAL BLUEPRINT · SEPTEMBER 2026
Nobody sells the thing you need. Build it out of free parts.
The camera can be infinite — hold the phone up, sweep the crate, review after. What decides whether that is a feature or a chore is not the capture UI. It is how many of the forty objects come back identified without you touching them. This document is about that number: where the data comes from, what runs on the phone, and the confidence bands that feed the review queue.
The headline finding: there is no general product-identification service worth building on, and the ones that exist would cost more per user than a user pays. The workable answer is per-type free corpora, on-device matching, and a server call only for the last five percent.
01 · WHAT THE BIG PLATFORMS ACTUALLY SELL
Each of these was evaluated as the primary matcher for capture. Only the last one survives that test — and it is the one that costs nothing.
{{ v.name }}
{{ v.what }}
{{ v.verdict }}
WHAT IT GIVES YOU
{{ v.gives }}
WHY IT IS NOT THE ANSWER
{{ v.why }}
PRICE
{{ v.price }}
{{ v.role }}
02 · THE ARITHMETIC THAT SETTLES IT
Infinite capture multiplies queries by the size of the crate. That is the whole problem with a per-query matcher: the faster the capture gets, the more it costs you. A one-time-purchase product cannot have a cost curve that rises with engagement.
{{ c.k }}
{{ c.big }}
{{ c.b }}
SERVER-SIDE MATCHING, ONE USER, LIFETIME — AT A {{ crateLabel }} SESSION SIZE
{{ r.k }}
{{ r.v }}
{{ r.b }}
Against a €29.99 one-time unlock, a serious collector cataloguing two thousand objects consumes a third of the purchase price in lookups alone — before storage, before the nightly valuation job, before a single support email. Market B's rule was already written for this: local matching is not an optimisation, it is the business model.
03 · WHERE THE DATA ACTUALLY LIVES, PER TYPE
There is no universal corpus and there does not need to be one. Each type already has a community that built the database, and most of them publish bulk dumps you can index once and ship. This table belongs next to the type manifest — it is the same shape of decision, one row per type, data rather than code.
Read the LOCAL IDENTIFIER column first. It is the fastest route in every row, and in nine of fourteen it is a string printed on the object that OCR can read without any visual matching at all.
TYPE
CORPUS, BEST FIRST
ACCESS & LICENCE
BULK / IMAGES
LOCAL IDENTIFIER — THE FAST PATH
{{ c.type }}
{{ c.corpus }}
{{ c.licence }}
{{ c.bulk }}
{{ c.ident }}
04 · THE PIPELINE — SIX STAGES, EACH ONE A CHANCE TO STOP
A capture enters at S0 and exits the moment a stage returns above threshold. Almost everything exits by S3. The stages are ordered by cost, not by cleverness — the cheapest thing that can answer is always tried first, and the only stage that costs you money is the one almost nothing reaches.
{{ s.n }}
STAGE
{{ s.t }}
{{ s.api }}
{{ s.b }}
BUDGET
{{ s.latency }}
{{ s.cost }}
EXITS HERE
{{ s.share }}
{{ s.shareNote }}
Share figures are targets to instrument against, not measurements. The one that matters is S5: if more than a few percent of captures reach the network, the local corpus for that type is wrong and the fix is the index, not the endpoint.
05 · CONFIDENCE BANDS — WHAT TURNS A PILE INTO A COLLECTION
This is the gate on shipping infinite capture. A sweep that produces forty review cards has not saved anyone time — it has moved the work and added a chore. The mode only earns its place if the top band absorbs most of the crate silently.
Auto-commit threshold is currently set at {{ thresholdLabel }}. Move it in Tweaks to see how the crate splits.
{{ b.range }}
{{ b.name }}
WHAT THE APP DOES
{{ b.does }}
WHAT THE USER SEES
{{ b.sees }}
{{ b.count }}
of {{ crateLabel }} captured
06 · INDEX SIZE — THE CONSTRAINT THAT SHAPES THE DOWNLOAD
Vinyl is the worst case at roughly two million releases. Order-of-magnitude figures, to establish which parts ship in the binary and which download on first use of a type.
{{ i.k }}
{{ i.size }}
{{ i.b }}
THE RULE THAT FALLS OUT OF IT
Text indexes ship. Embedding indexes download per type, on first use, over Wi-Fi, with a visible size before the tap — the same contract as an offline map. A type whose embedding index cannot be squeezed under about 150 MB does not get visual matching at all; it gets OCR and barcode, and that is an acceptable type profile, exactly as empty providers is an acceptable type profile today.
07 · WHAT THIS CHANGES IN THE BLUEPRINT
{{ c.k }}
{{ c.t }}
{{ c.b }}
08 · STILL OPEN
{{ o.k }}
{{ o.q }}
{{ o.b }}